// 书写拦截器

import axios from "axios"
import Vue from 'vue';
import { Toast } from 'vant';

Vue.use(Toast);

// 创建axios实例
const instance =  axios.create({
    // 请求的前缀抽取到baseURL
    baseURL:"http://kumanxuan1.f3322.net:8001",
    timeout:5000
})

// 书写请求拦截器
instance.interceptors.request.use(config=>{  // config本次请求的基本信息
    // 这个函数什么时候执行？这个函数在请求发出去之前就执行，拦截了这次请求
    // console.log(111111);
    // console.log("执行了请求拦截器的代码",config);

    // 在这个方法中检测，有没有token，如果有就在请求头中携带上这个token
    let token = localStorage.getItem("token");
    if(token){
        config.headers["X-Nideshop-Token"]=token;
    //     //在请求头中携带上这个token
    //     ....
    }
    Toast.loading({
        message: '加载中...',
        forbidClick: true,
    });

    return config

    
},err=>{
    return Promise.reject(err)
})

// 响应拦截器
instance.interceptors.response.use(res=>{
    //这个函数什么时候执行？ 这个函数在接收到响应之后，在执行组件中的then函数之前
    // console.log(22222,res);

    // 统一管理错误提示
    // 判断errno是不是不为0， 如果不为0，就说明数据没有正常拿到 直接log errmsg
    let data = res.data;

    if(data.errno !==0){
        console.log("响应拦截器中", data.errmsg || "网络出错");
    }
    // 手动清除 Toast
    Toast.clear();
    return data  // return 后面的值返回到哪里??  return 后面的值被then方法的res接收了
},err=>{
    // 手动清除 Toast
    Toast.clear();
    return Promise.reject(err)
})



export default instance